package com.wzm.utils;

import java.util.ArrayList;
import java.util.Vector;

import android.widget.TextView;

public class StringUtils {

    public static String replaceUrlWithPlus(String url) {
        //1. 处理特殊字符
        //2. 去除后缀名带来的文件浏览器的视图凌乱(特别是图片更需要如此类似处理，否则有的手机打开图库，全是我们的缓存图片)
        if (url != null) {
            return url.replaceAll("http://(.)*?/", "").replaceAll("[.:/,%?&=]", "+").replaceAll("[+]+", "+");
        }
        return null;
    }
    
    /**
     * 生成多行字符串列表
     * 
     * @param MaxWidth
     */
    public static ArrayList<String> generateTextList(TextView tv,int width,String message) {
    	ArrayList<String> lineStrings = new ArrayList<String>();
        String remain = message;      
        
        while (!remain.equals("")) {
            String line = getLineText(tv,width, remain);
            lineStrings.add(line);
            remain = remain.substring(line.length(), remain.length());
        }
        return lineStrings;
    };
    
    /**
     * 获取一行的字符
     * 
     * @param MaxWidth
     * @param str
     * @return
     */
    private static String getLineText(TextView tv,int MaxWidth, String str) {

        // 真实行
        StringBuffer trueStringBuffer = new StringBuffer();
        // 临时行
        StringBuffer tempStringBuffer = new StringBuffer();

        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            String add = "";
            // 如果c是字母需要考虑英文单词换行功能
            if (!isChinese(c) && isENWordStart(str, i)) {

                int place = getNextSpecePlace(i, str);
                // 找到下一个空格
                if (place > -1) {
                    add = str.substring(i, place) + " ";
                    if (tv.getPaint().measureText(add) > MaxWidth) {
                        add = "" + c;
                    } else {
                        i = place;
                    }
                } else {
                    add = "" + c;
                }
            } else {
                add = "" + c;
            }

            tempStringBuffer.append(add);
            String temp = tempStringBuffer.toString();
            float width = tv.getPaint().measureText(temp.toString());
            
            if (width <= MaxWidth) {

                trueStringBuffer.append(add);
            } else {
                break;
            }

        }
        return trueStringBuffer.toString();
    }
    
    
    /**
     * 判断是否为中文
     * 
     * @param c
     * @return
     */
    private static final boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
            return true;
        }
        return false;
    }
    
    /**
     * 是否为英文单词的首字母
     * 
     * @param str
     * @param i
     * @return
     */
    public static boolean isENWordStart(String str, int i) {

        if (i == 0) {
            return true;

        } else if (str.charAt(i - 1) == ' ') {
            return true;
        }
        return false;
    }
    
    
    /**
     * 找到下一个空格的地方
     * 
     * @param i
     * @param str
     * @return
     */
    public static int getNextSpecePlace(int i, String str) {

        for (int j = i; j < str.length(); j++) {
            char c = str.charAt(j);
            if (c == ' ') {

                return j;
            }
        }
        return -1;
    }
    
    

	public static String[] StringFormat(String text, int maxWidth, int fontSize) 
	{ 
		
		String[] result = null; 		
		Vector<String> tempR = new Vector<String>();
		tempR.clear();
		String strline = text.substring(0,15);
		tempR.add(strline);
		tempR.add(strline);
		
		
//		int lines = 0 ; 
//		int len = text.length(); 
//		
//		int index0 = 0 ; 
//		int index1 = 0 ; 
//		
//		boolean wrap; 
//		
//		while ( true )
//		{ 
//		
//			int widthes = 0 ; 
//			
//			wrap = false ; 
//			
//			for (index0 = index1; index1 < len; index1++) 
//			{ 
//				
//				if (text.charAt(index1) == '\n' ) 
//				{ 
//				
//					index1++; 
//					
//					wrap = true ; 
//					
//					break ; 
//				
//				} 
//				
//				widthes = fontSize + widthes; 
//				
//				if (widthes > maxWidth) 
//				{ 
//				
//					break ; 
//				
//				} 
//				
//			} 
//			
//			lines++; 
//			
//			if (wrap) 
//			{ 
//				Logger.error("line:"+text.substring(index0, index1 - 1 ));
//				tempR.addElement(text.substring(index0, index1 - 1 )); 
//			
//			}else { 
//				Logger.error("line:"+text.substring(index0, index1));
//				tempR.addElement(text.substring(index0, index1)); 
//			
//			} 
//			
//			if (index1 >= len) 
//			{ 
//			
//				break ; 
//			
//			} 
//		
//		} 
//		
		result = new String[tempR.size()]; 
		tempR.copyInto(result); 
		tempR = null;
		return result; 
	
	} 


}
